package cn.b.sky.mes.hr.dao;

import java.util.Date;
import java.util.List;

import cn.b.sky.mes.hr.model.Shifting;
import cn.b.sky.mes.hr.model.condition.ShiftingCondition;
import org.apache.ibatis.annotations.Param;

public interface ShiftingDao {

  List<Shifting> getShiftingsListByCondition(ShiftingCondition condition);

  int getShiftingsCountByCondition(ShiftingCondition condition);

  Shifting getShiftingById(Long id);

  /** 
   * 
   * <strong>Title : getShiftingByPersonnelAndDate<br>
   * </strong> <strong>Description :
   * </strong>查看当前职员当前天的排班数据（如果id不为0则表示除了该条数据以外的数据，否则全部数据）<br>
   * <strong>Create on : 2016年3月29日 下午1:09:07<br>
   * </strong>
   * <p>
   * 
   * @param siteCode
   * @param personnelCode
   * @param theDate
   * @param id
   * @return List<Shifting>
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Shifting> getShiftingByPersonnelAndDate(@Param("siteCode") String siteCode,
      @Param("personnelCode") String personnelCode, @Param("theDate") String theDate, @Param("id") Long id);

  /**
   * 
   * <strong>Title : getNotPerformancesShiftingByPersonnelAndDate<br></strong>
   * <strong>Description : </strong>查询没有录入绩效的排班，启用排班使用<br> 
   * <strong>Create on : 2016-4-8 下午2:51:32<br></strong>
   * <p>
   * @param siteCode
   * @param personnelCode
   * @param theDate
   * @return
   * List<Shifting>
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Shifting> getNotPerformancesShiftingByPersonnelAndDate(@Param("siteCode") String siteCode,
      @Param("personnelCode") String personnelCode, @Param("theDate") String theDate);

  /**
   * 
   * <strong>Title : getShiftingByPersonnelAndPeriod<br>
   * </strong> <strong>Description : </strong>查询当前日期48h范围内的排班数据（如果id不为0则表示除了该条数据以外的数据，否则全部数据）<br>
   * <strong>Create on : 2016年3月30日 下午3:42:16<br>
   * </strong>
   * <p>
   * 
   * @param siteCode
   * @param personnelCode
   * @param theDate
   * @param id
   * @return List<Shifting>
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Shifting> getShiftingByPersonnelAndPeriod(@Param("siteCode") String siteCode,
      @Param("personnelCode") String personnelCode, @Param("theDate") String theDate, @Param("id") Long id);

  void insertShifting(Shifting shifting);

  void updateShifting(Shifting shifting);

  void deleteShifting(Long id);

  /**
   * 
   * <strong>Title : getShiftingsByWorkcenterAndDate<br></strong>
   * <strong>Description : </strong>查询某个工作中心所有人当前日期的排班情况<br> 
   * <strong>Create on : 2016年4月1日 下午3:07:45<br></strong>
   * <p>
   * @param siteCode
   * @param workcenterCode
   * @param theDate
   * @return
   * List<Shifting>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Shifting> getShiftingsByWorkcenterAndDate(@Param("siteCode") String siteCode,
      @Param("workcenterCode") String workcenterCode, @Param("theDate") String theDate);

  /**
   * 
   * <strong>Title : getShiftingsByWorkcenterAndDate<br></strong>
   * <strong>Description : </strong>查询某个工作中心所有人当前日期的排班情况,未录入绩效的<br> 
   * <strong>Create on : 2016年4月1日 下午3:07:45<br></strong>
   * <p>
   * @param siteCode
   * @param workcenterCode
   * @param theDate
   * @return
   * List<Shifting>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Shifting> getNotPerformancesShiftingByWorkcenterAndDate(@Param("siteCode") String siteCode,
      @Param("workcenterCode") String workcenterCode, @Param("theDate") String theDate);

  /**
   * 
   * <strong>Title : getLatestAnnangedDate<br></strong>
   * <strong>Description : </strong>获取指定工作中心最新的排班日期<br> 
   * <strong>Create on : 2016年4月6日 下午7:17:38<br></strong>
   * <p>
   * @param siteCode
   * @param workcenterCode
   * @return
   * Date
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  Date getLatestAnnangedDate(@Param("siteCode") String siteCode, @Param("workcenterCode") String workcenterCode);

}
